package com.cloudbroker.bcs.platform.dav.middle.extservice.uc;

import com.cloudbroker.bcs.common.annotation.UCFunction;
import com.cloudbroker.bcs.common.entity.HSBCPSBackVO;
import com.cloudbroker.bcs.csvc.uc.api.vo.request.*;
import com.cloudbroker.bcs.csvc.uc.api.vo.request.base.UCForm;
import com.cloudbroker.bcs.csvc.uc.api.vo.response.*;
import com.cloudbroker.bcs.csvc.uc.api.vo.response.base.UCBackVo;

public interface UCenterService {
    
    /**
     * 用户注册
     * @param param
     * @return
     */
    @UCFunction
    public UIDBackVo funcRegister(FuncRegisterForm param);
    
    /**
     * 用户登录
     * @param param
     * @return
     */
    @UCFunction
    public UIDBackVo funcLogin(FuncLoginForm param);
    
    /**
     * 用户authcode获取
     * @param param
     * @return
     */
    @UCFunction
    public AuthCodeBackVo funcAuthCodeGet(FuncAuthCodeForm param);
    
    /**
     * 用户authcode校验（authcode登录）
     * @param param
     * @return
     */
    @UCFunction
    public UCBackVo funcAuthCodeLogin(FuncCodeCheckForm param);
    
    /**
     * 用户数据更新
     * @param param
     * @return
     */
    @UCFunction
    public HSBCPSBackVO funcUserUpdate(FuncUserUpdateForm param);
    
    /**
     * 用户数据获取
     * @param param
     * @return
     */
    @UCFunction
    public UserInfoBackVo funcUserinfo(UCForm param);
    
    /**
     * 用户token检验
     * @param param
     * @return
     */
    @UCFunction
    public UserInfoBackVo funcUserTokenCheck(UCForm param);
    
    /**
     * 用户登出
     * @param param
     * @return
     */
    @UCFunction
    public HSBCPSBackVO funcLogout(UCForm param);
    
    /**
     * 用户修改密码
     * @param param
     * @return
     */
    @UCFunction
    public HSBCPSBackVO funcPasswordReset(FuncPasswordResetForm param);
    
    /**
     * 用户注册登录
     * @param param
     * @return
     */
    @UCFunction
    public UIDBackVo funcRegisterAndLogin(FuncRegisterAndLoginForm param);
    
    /**
     * 用户基本信息获取
     * @param param
     * @return
     */
    @UCFunction
    public UserInfoBackVo funcUserBasicInfo(FuncLoginForm param);
    
    /**
     * 校验用户是否注册
     * @param param
     * @return
     */
    @UCFunction
    public CheckRegisterBackVo funcCheckRegister(FuncLoginForm param);

    /**
     * 投顾信息获取
     * @param param
     * @return
     */
    @UCFunction
    public AdviserInfoVo funcAdviserGet(FuncAdviserForm param);

    /**
     * 是否是资金账户
     * @param param
     * @return
     */
    @UCFunction
    public CustomerAccountType funcIsCapitalAccount(UCForm param);
}
